(function ($) {
    function Parcel(area_id, caller) {
        var vdiv = area_id+'Tab';
		var area = $('#'+area_id);
        var gritab;

		area.css({'overflow':'hidden'})
		area.html('<div id="'+vdiv+'Pager"></div><table id="'+vdiv+'"></table>');
        
		var pager_id = '#' + vdiv + 'Pager';
		var pager = $(pager_id);
        var el_alert_status;
        var el_edit_status;
        var el_build_id;
        var el_build_name;
        var el_build_address;
        var build_name = '';
        var build_address = '';
		
        var el_scsr;
		var el_los;
        var el_cwsr;
		
		var el_dpt01;
		var el_dpt02;
        var el_perm01_date;
        var el_perm02_date;
        var el_perm03_date;
        var el_rent;
        var el_decl01;
        var el_decl02;
		
        var col_order = [0, 1, 2, 3, 4, 5, 6,  7, 8, 9, 10, 11,  12, 13, 14, 15, 16, 17, 18, 19, 20 ];
		
        var col_names = ['ID', 'Alert_status', 'Edit_status', 'ID объекта', 'Объект', 'Адрес объекта', 
						'Высота', 'PO YT', 'SCSR', 'LOS', 'CWSR', 'Тип', 'ДПТ1', 'ДПТ2', 'Решение 1', 
						'Решение 2', 'Решение 3', 'Оренда', 'Декл.1', 'Декл.2', 'Комментарий' ];
						
        var col_model = [
		    { name: 'id', index: 'par_id', hidden: true, width: 1, editable: false, fixed: true 
			},
		    { name: 'alert_status', index: 'alert_status', hidden: true, width: 1, editable: true, fixed: true
			},
		    { name: 'edit_status', index: 'edit_status', hidden: true, width: 1, editable: true, fixed: true,
				editoptions: { dataInit: function (el) { el_edit_status = el; } }
			},
		    { name: 'par_build_id', index: 'par_build_id', hidden: true, width: 1, editable: true,
		        editoptions: { maxlength: "16", dataInit: function (el) { el_build_id = el; } }
		    },
		    { name: 'build_name', index: 'build_name', hidden: false, width: 70, editable: true,
		        editoptions: { maxlength: "64", style: "width:250px;", dataInit: function (el) { el_build_name = el; } },
				formoptions: { label: '<div class="jqg-form-label">Название объекта</div>'}
		    },
		    { name: 'build_address', index: 'build_address', hidden: false, width: 150, editable: true,
		        editoptions: { maxlength: "128", style: "width:250px;", dataInit: function (el) { el_build_address = el; } },
				formoptions: { label: '<div class="jqg-form-label">Адрес объекта</div>'}
		    },
		    { name: 'height', index: 'height', hidden: false, width: 60, editable: true,
            	editoptions: { maxlength: "3", style: "width:250px;" },
				formoptions: { label: '<div class="jqg-form-label">Высота</div>'}
		    },
			
			{ name: 'poyt', index:'poyt', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;" },
				formoptions: { label: '<div class="jqg-form-label">PO YT</div>'}
			},         
			{ name: 'scsr', index:'scsr', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_scsr = el; } },
				formoptions: { label: '<div class="jqg-form-label">SCSR</div>'}
			},         
			{ name: 'los', index:'los', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_los = el; } },
				formoptions: { label: '<div class="jqg-form-label">LOS</div>'}
			},         
			{ name: 'cwsr', index:'cwsr', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_cwsr = el; } },
				formoptions: { label: '<div class="jqg-form-label">CWSR</div>'}
			},         
		    { name: 'loctype', index: 'loctype', hidden: false, width: 50,
					search:true, stype:'select', searchoptions:{value:"0:Все;1:1,3;2:1,2,3"},
					editable: true, edittype:'select', editoptions:{value:"0:Выберите...;1:1,3;2:1,2,3"},
					formoptions: { label: '<div class="jqg-form-label">Тип</div>'},
					formatter: function(x) { var y = ['0','1','2']; return y[x]; }
			},
			{ name: 'dpt01', index:'dpt01', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_dpt01 = el; } },
				formoptions: { label: '<div class="jqg-form-label">ДПТ 1</div>'}
			},         
			{ name: 'dpt02', index:'dpt02', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_dpt02 = el; } },
				formoptions: { label: '<div class="jqg-form-label">ДПТ 2</div>'}
			},         
			{ name: 'perm01_date', index:'perm01_date', hidden: false, width:80, editable: true, 
				formatter: addPic, unformat: delPic,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_perm01_date = el; } },
				formoptions: { label: '<div class="jqg-form-label">Дата решения 1</div>'}
			},         
			{ name: 'perm02_date', index:'perm02_date', hidden: false, width:80, editable: true,
				formatter: addPic, unformat: delPic,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_perm02_date = el; } },
				formoptions: { label: '<div class="jqg-form-label">Дата решения 2</div>'}
			},         
			{ name: 'perm03_date', index:'perm03_date', hidden: false, width:80, editable: true,
				formatter: addPic, unformat: delPic,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_perm03_date = el; } },
				formoptions: { label: '<div class="jqg-form-label">Дата решения 3</div>'}
			},         
			{ name: 'rent', index:'rent', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_rent = el; } },
				formoptions: { label: '<div class="jqg-form-label">Договор аренды</div>'}
			},         
			{ name: 'decl01', index:'decl01', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_decl01 = el; } },
				formoptions: { label: '<div class="jqg-form-label">Декларация 1</div>'}
			},         
			{ name: 'decl02', index:'decl02', hidden: false, width:80, editable: true,
            	editoptions: { style: "width:250px;", dataInit: function (el) { el_decl02 = el; } },
				formoptions: { label: '<div class="jqg-form-label">Декларация 2</div>'}
			},         
		    { name: 'par_comment', index: 'par_comment', hidden: false, width: 400, editable: true,
		        editoptions: { maxlength: "128",  style: "width:250px;" },
				formoptions: { label: '<div class="jqg-form-label">Комментарий</div>'}
		    }
        ];

		var flds = [ 'build_name', 'build_address', 'height', 'poyt', 'scsr', 'los', 'cwsr', 'loctype', 
					'dpt01', 'dpt02', 'perm01_date', 'perm02_date', 'perm03_date',	'rent', 'decl01', 'decl02' ];
		var fdts = [ 0, 0,  0, 0, 1, 1, 1, 0,   1, 1, 1, 1, 1,	1, 1, 1 ];
		
        var jqgo = {
            url: 'index.php',
            editurl: 'index.php',
            datatype: 'json',
            postData: { q: 'parcel/index' },
            emptyrecords: true,
            autowidth: false,
            //		    scrollOffset: 22,
            gridview: true,
            hidegrid: false,
            hoverrows: true,
            recordpos: 'right',
            scrollrows: true,
            multiselect: true,
            multiselectWidth: 25,
            multiboxonly: true,
//			multikey: 'ctrlKey',
            mtype: 'POST',
            colNames: col_names,
            colModel: col_model,
            page: 1,
            pager: pager,
            pagerpos: 'right',
            rowNum: 50,
            rowList: [50, 200, 1000],
            //		    viewrecords: true,
            loadui: 'disable',
            toolbar: [false, 'top'],
			toppager: false,
            filterbar: false,
            shrinkToFit: false,
            height: $('#'+area_id).innerHeight() - 77,
            width: $('#'+area_id).innerWidth() - 2,
            sortname: 'build_name',
            sortorder: 'desc',
            sortable: true,
            caption: '',
            loadError: function () {
                alert("Ошибка загрузки даных");
            },
            loadComplete: function (data) {
                switch( data.userdata.errcode ) {
                    case 0:
/*
                        if ($.browser.msie || $.browser.webkit) {
                            $('#' + vdiv + ' tr.jqgrow td').height(21);
                        }
*/
//						$('#' + vdiv + ' tr.jqgrow td').css({'height':'21px','line-height':'16px'});
                        break;
                    case 999:    
                        alert(data.userdata.errmess);
                        break;
                    case 99:    
                        app.alert('AlertDlg', 'Ошибка', data.userdata.errmess, 'app-icon-stop32', caller.Close );
                        break;
                    default:
                        alert( data.userdata.errmess );
                        break;
                }
				var row_id, status;
				var stats = gritab.getCol( 'alert_status', true );
				for( var i=0; i<stats.length; i++ ) {
					row_id = stats[i].id;
					status = stats[i].value;
					if( status.indexOf( '1' ) != -1 ) {
						for( var k=0; k<flds.length; k++ ) {
							if( status.substr( k, 1 ) == '1' ) 
								gritab.jqGrid('setCell',row_id,flds[k],'','ui-state-error');
						}
					}
				}
            },
            ondblClickRow: function (id, iRow, iCol) {
                $('#' + vdiv).jqGrid('editGridRow', id,
                {
					width: 450,
					resize: false,
                    modal: true,
                    jqModal: true,
//                    zIndex: app.jqgrid_form_min_z_index,
					zIndex: app.ui_dialog_min_z_index+1,
                    closeOnEscape: true,
                    editData: { q: 'parcel/update' },
					onInitializeForm: function( fm ) {
						$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                    afterShowForm: onShowEditForm,
					beforeSubmit: TestNewData, 
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true,
					onClose: onCloseEditForm
                }
                );
            }
        };

	app.show_scan = function( docurl ) {
		window.open(docurl, 'pdfdoc', 'location=0,status=0,toolbar=0,menubar,resizable,scrollbars,height=600,width=443');
	};

// Форматер
		function addPic( cellval, opt, rowObj ) {
			var newval = '', pic, a;
			if( cellval == "" ) return '';

			a = cellval.match(/^(\d\d\.\d\d\.\d\d\d\d)(.*)/);
			if( a && a.length ) {
				newval = a[1];
				pic = a[2];
				if( pic != '' )
					newval = 
					'<div style="cursor:pointer;height=16px;display:inline-block;" onclick="app.show_scan(\''+pic+'\');" '+
						'title="Скачать и посмотреть документ">' +
						'<span style="vertical-align:middle;line-height:13px;">'+newval+'</span>'+
						'<span style="vertical-align:middle;display:inline-block;" class="ui-icon ui-icon-image"></span>'+
					'</div>';
			}
			return newval;
		}

		function delPic( cellval, opt, rowObj ) {
			return cellval != '' ? app.lib.strip_tags(cellval) : '';
		}

		function onShowAddForm(fm) {
			var elms = $(fm).find(".EditTable tr.FormData");
			elms.hide();
			elms.filter("tr#tr_build_name, tr#tr_build_address, tr#tr_par_comment").show();
			$(el_build_name).prop('readonly', false );
			$(el_build_address).prop('readonly', true );
			SetBuildHack();
            $('div#editmod' + vdiv).css({'overflow':'visible'}).shadow();
		}
		
		function onShowEditForm(fm) {
			var elms = $(fm).find(".EditTable tr.FormData");
			var status = $(el_edit_status).val();
			var focus = false;
			var inp;
			
			elms.hide();
			for( var k=0; k<flds.length; k++ ) {
// Показываем нужные строки
				if( status.substr( 2*k, 1 ) == '1' ) {
					elms.filter("#tr_"+flds[k]).show();
				}
// Устанавливаем признак readonly
				inp = elms.find("#"+flds[k]);
				if( status.substr( 2*k+1, 1 ) == '0' )
					inp.prop('readonly', true );
				else {
					inp.prop('readonly', false );
					if( !focus ) {
						inp.focus();
						focus = true;
					}					
				}
				
				if( fdts[k] ) BindCalendar( fm, elms.find("#"+flds[k]) ); 
			}
			
			elms.filter("tr#tr_par_comment").show();
			if( ! $( el_build_name ).prop('readonly') ) {
				SetBuildHack();
			}
			
            $('div#editmod' + vdiv).css({'overflow':'visible'}).shadow();
		}
		        
		function onCloseAddForm() {
			$(el_build_name).autocomplete( "destroy" ).unbind();
			return true;
		}
		
		function onCloseEditForm(fm) {
			if( ! $( el_build_name ).prop('readonly') )
				$(el_build_name).autocomplete( "destroy" ).unbind();
			
			$(el_scsr).datepicker( "destroy" ).unbind();
			$(el_los).datepicker( "destroy" ).unbind();
			$(el_cwsr).datepicker( "destroy" ).unbind();
			$(el_dpt01).datepicker( "destroy" ).unbind();
			$(el_dpt02).datepicker( "destroy" ).unbind();
			$(el_perm01_date).datepicker( "destroy" ).unbind();
			$(el_perm02_date).datepicker( "destroy" ).unbind();
			$(el_perm03_date).datepicker( "destroy" ).unbind();
			$(el_rent).datepicker( "destroy" ).unbind();
			$(el_decl01).datepicker( "destroy" ).unbind();
			$(el_decl02).datepicker( "destroy" ).unbind();
			return true;
		}
		
		function onShowDelForm() {
            $('div#delmod' + vdiv).shadow();
/*
            $('#DelTbl_' + vdiv + ' tr:eq(2) td').html(
                    '<p style="font-weight:700; text-align:center;">ВНИМАНИЕ !!!</p>' +
                    'Удаление записи(сей)  в этой таблице повлечет за собой<br>' +
                    'удаление соответствующих записей в таблице "Архив цен"' +
                    '<p style="text-align:center;">Выполнить удаление ?</p>'
            );
*/				
		}
				
// Создадим jqGrid
        gritab = $('#' + vdiv).jqGrid(jqgo);

// Индикация ошибок при вводе, ред., удал.
        function TestNewData(pd, formid) {
            var result = true, mess = '';
//            if( pd.inc_cont_id == '' || pd.inc_build_id == '' || pd.inc_bank_date == '') {
//                result = false;
//                mess = 'Данные введены с ошибками !!!';
//            }
            return[result,mess];
        }
        
// Индикация серверных ошибок добавления, ред., удал.
        function responseOnSubmit(response, postdata) {
            var rsp = $.parseJSON(response.responseText);
            var success = true;
            var msg = '';

            if (rsp.errcode) {
                success = false;
                msg = rsp.errmess;
            }
				
            return [success, msg];
        }

// Напоминание о выборе строки
		function selRowPlease() {
			app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите строку в таблице.", 'app-icon-stop32');
		}
	
// Навигатор - создаем панель инструментов
        gritab.jqGrid('navGrid', pager_id, {
				add:false,del:false,edit:false,view:false,search:false,refresh:false });
        
// Пользовательский навигатор - создать
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Создать',
            title: 'Создать запись',
            buttonicon: 'ui-icon-plus',
            onClickButton: function() { 
				gritab.jqGrid('editGridRow', 'new', {
					width: 450,
					resize: false,
                    modal: true,
                    jqModal: true,
//                    zIndex: app.jqgrid_form_min_z_index,
					zIndex: app.ui_dialog_min_z_index+1,
                    closeOnEscape: true,
                    editData: { q: 'parcel/insert' },
					onInitializeForm: function( fm ) {
						$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                    afterShowForm: onShowAddForm,
                    beforeSubmit: TestNewData, 
                    afterSubmit: responseOnSubmit,
                    closeAfterAdd: true,
					onClose: onCloseAddForm
				});
			}
        });

// Пользовательский навигатор - редактирование
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Изменить',
            title: 'Изменить данные этапа',
            buttonicon: 'ui-icon-pencil',
            onClickButton: function() { 
				var curr_id = gritab.getGridParam('selrow');
				if( !curr_id ) { selRowPlease(); return; }
				var estat = gritab.getCell( curr_id, 'edit_status');
				if( estat.indexOf('1') == -1 ) {
					app.alert('AlertDlg', 'Информация', 'Все этапы по землеотведению для данного объекта успешно пройдены.', 'app-icon-info32');
					return false;
				}

				gritab.jqGrid('editGridRow', curr_id, {
					width: 450,
					resize: false,
                    modal: true,
                    jqModal: true,
//                    zIndex: app.jqgrid_form_min_z_index,
					zIndex: app.ui_dialog_min_z_index+1,
                    closeOnEscape: true,
                    editData: { q: 'parcel/update' },
					onInitializeForm: function( fm ) {
						$(fm).prepend('<style type="text/css">.ui-autocomplete {max-width:252px;}</style>'); },
                    afterShowForm: onShowEditForm,
                    beforeSubmit: TestNewData, 
                    afterSubmit: responseOnSubmit,
                    viewPagerButtons: false,
                    closeAfterEdit: true,
					onClose: onCloseEditForm
				});
			}
        });
// Пользовательский навигатор - удаление
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Удалить',
            title: 'Удаление выбранной записи',
            buttonicon: 'ui-icon-trash',
            onClickButton: function() { 
				var rowlist = gritab.getGridParam('selarrrow').toString();
				if( !rowlist ) { selRowPlease(); return; }
				gritab.jqGrid('delGridRow', rowlist, {
                    modal: true,
                    jqModal: true,
                    width: 250,
					msg: '<table style="width:240px;margin-top:16px;"><tr><td style="width:50px;">'+
							'<div class="app-icon-quest32"></div></td><td>Удалить выбранную запись(и) ?</td></tr></table>',
					resize: false,
//                    zIndex: app.jqgrid_form_min_z_index,
					zIndex: app.ui_dialog_min_z_index+1,
                    closeOnEscape: true,
                    delData: { q: 'parcel/delete' },
                    afterShowForm: onShowDelForm,
                    afterSubmit: responseOnSubmit
				});
			}
        });
// Пользовательский навигатор - просмотр
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Просмотр',
            title: 'Показать в виде формы',
            buttonicon: 'ui-icon-document',
            onClickButton: function() { 
				var curr_id = gritab.getGridParam('selrow');
				if( !curr_id ) { selRowPlease(); return; }
				gritab.jqGrid('viewGridRow', curr_id, {
					width: 450,
					resize: true,
                    modal: true,
                    jqModal: true,
//                    zIndex: app.jqgrid_form_min_z_index,
					zIndex: app.ui_dialog_min_z_index+1,
                    closeOnEscape: true,
                    viewPagerButtons: false,
					labelswidth: '35%',
					beforeShowForm: function(fm) { 
						$(fm).find("table:first td").css({'white-space':'normal','vertical-align':'top'});
						$('div#viewmod' + vdiv).shadow(); 
					}
				});
			}
        });
// Разделитель
		gritab.jqGrid('navSeparatorAdd',pager_id);
// Пользовательский навигатор - обновить
		gritab.jqGrid('navButtonAdd',pager_id,{
			caption: 'Обновить',
			title: 'Обновить таблицу',
			buttonicon: 'ui-icon-refresh',
			onClickButton: function() { 	gritab.trigger("reloadGrid"); }
		});    
// Пользовательский навигатор - выбор столбцов
		gritab.jqGrid('navButtonAdd',pager_id,{
			caption: 'Столбцы',
			title: 'Выбор отображаемых столбцов',
			buttonicon: 'ui-icon-calculator',
			onClickButton: function(){ gritab.columnChooser(); }
		});     
// Разделитель
		gritab.jqGrid('navSeparatorAdd',pager_id);
// Пользовательский навигатор - загрузка/удаление сканов
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Загрузить',
            title: 'Загрузить документ на сервер',
            buttonicon: 'ui-icon-image',
            onClickButton: function() { 
				var curr_id = gritab.getGridParam('selrow');
				if( !curr_id ) { selRowPlease(); return; }
/*
				if( !curr_id ) {
					$.jgrid.info_dialog("Ошибка", 
						'<div style="margin:16px 0;">Пожалуйста, выберите запись.</div>',
						jQuery.jgrid.edit.bClose,{modal:true});
					return;
				}
*/
				var row_data = gritab.getRowData(curr_id);
				opts = new Array();
				if( row_data.perm01_date != '' ) opts.push( [ 'perm01', 'Решение 1' ] );
				if( row_data.perm02_date != '' ) opts.push( [ 'perm02', 'Решение 2' ] );
				if( row_data.perm03_date != '' ) opts.push( [ 'perm03', 'Решение 3' ] );
				if( opts.length )
					ImageUpload( {
						id: curr_id, 
						build_name: row_data.build_name,
						opts: opts
					}, function() { gritab.trigger("reloadGrid"); } );
				else
					app.alert('AlertDlg', 'Внимание', "Колонки 'Решение 1(2,3)' еще не заполнены.<br>"+
						"Документы можно прикрепить к ним только после внесения дат.", 'app-icon-stop32');				
			}
        });
// Пользовательский навигатор - дневник выполнения работ
        gritab.jqGrid('navButtonAdd', pager_id, {
            caption: 'Дневник',
            title: 'Дневник проведения работ',
            buttonicon: 'ui-icon-note',
            onClickButton: function() { 
				var curr_id = gritab.getGridParam('selrow');
				if( !curr_id ) { selRowPlease(); return; }
				var row_data = gritab.getRowData(curr_id);
				notePad( row_data.build_name, row_data.par_build_id ); 
			}
        });

// Делаем ширину панели кнопок максимальной
		$('td#'+area_id+'TabPager_center').width(2);
		
        gritab.filterToolbar({ searchOnEnter: false, afterSearch: function () { } });

// Прикрепить календарь к ячейке поиска
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_scsr") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_los") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_cwsr") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_dpt01") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_dpt02") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_perm01_date") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_perm02_date") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_perm03_date") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_rent") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_decl01") );
		BindCalendar( $("#gview_"+vdiv+" tr.ui-search-toolbar"), $("#gview_" + vdiv + " #gs_decl02") );
		
        function BindCalendar(fm, el) {
            $(el).datepicker({
				onClose: function(dt, inst) { 
					if( $(fm).hasClass('ui-search-toolbar') && dt != '' ) gritab[0].triggerToolbar();
				},
                dateFormat: "dd.mm.yy",
                showOn: "button",
                buttonImage: "img/calendar2.png",
                buttonImageOnly: true,
                buttonText: "Календарь",
                changeMonth: true,
                changeYear: true
            });

            fm.find(".ui-datepicker-trigger")
                .css({ 'cursor': 'pointer', 'position': 'relative', 'left': '-18px', 'top': '3px' });
            $(el).attr("title", "Формат ввода: 'дд.мм.гггг'");                
        }

        function SetBuildHack() {
            $(el_build_name).autocomplete({
				html: true,
                minLength: 2, autoFocus: true,
				appendTo: 'div#editmod' + vdiv,
                source: function (request, responce) {
                    $.post('index.php', { q: 'builds/find', term: request.term },
                    function (rsp, textStatus) {
                        if (rsp.errcode) {
                            if (rsp.errcode == '999') { alert(rsp.errmess); }
                            else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
                            responce();
                            return;
                        }
                        if (rsp.data) {
                            responce($.map(rsp.data, function (item) {
                                return { label: item.name+' ('+item.address+' )', 
										value:item.value, name:item.name, address:item.address }
                            }));
                            return;
                        }
                        responce();
                    }, 
                    'json');
                },
                focus: function (event, ui) { return false; },
                select: function (event, ui) {
                    $(el_build_id).val(ui.item.value);
                    build_name = ui.item.name.replace(/<(b|\/b)>/g,'');
                    $(el_build_name).val(build_name);
                    build_address = ui.item.address.replace(/<(b|\/b)>/g,'');
                    $(el_build_address).val(build_address);
                    return false;
                }
            });
            $(el_build_name).bind( 'change', function () { 
                if( $(el_build_id).val() == "" || $(el_build_name).val() != build_name ) { 
                    build_name = '';
                    $(el_build_id).val("");
                }
            });            
        }

		this.Destroy = function() {
			$("#gview_" + vdiv + " #gs_scsr").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_los").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_cwsr").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_dpt01").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_dpt02").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_perm01_date").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_perm02_date").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_perm03_date").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_rent").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_decl01").datepicker( "destroy" ).unbind();
			$("#gview_" + vdiv + " #gs_decl02").datepicker( "destroy" ).unbind();

			gritab.GridDestroy(vdiv);
			area.find('*').remove();
		};
		this.Resize = function() {
			gritab.setGridWidth( area.innerWidth() - 2 );
			gritab.setGridHeight( area.innerHeight() - 77 );
		};

	};  // End of create function definition


	function ParcelProxy() {
		var oTab, area;
		var active = false;
		
		this.Open = function( area_id ) {
			if( active  ) return;
			area = area_id;
			$('#'+area+'Title').show();
			oTab = new Parcel( area_id, this ); 
			$(window).bind( 'resize', oTab.Resize );
			active = true;
		};
		this.Close = function() { 
			if( !active  ) return;
			$(window).unbind( 'resize', oTab.Resize );
			oTab.Destroy(); 
			$('#'+area+'Title').hide();
			active = false;
		};
		this.Resize = function() { oTab.Resize(); };
	}
	
	app.Parcel = new ParcelProxy();

	
// Просмотр/Загрузка изображения
	function ImageUpload( p, onSuccess ) {
		var curr_id = p.id;
		var bname = p.build_name;
		var box = 'scan_upload_form';
		var scan_doc = '';
		var i, sop;
	
		if( bname == '' || !p.opts.length ) return;
		
		sop = '';
		for( i=0; i<p.opts.length; i++ )
			sop += '<option value="'+p.opts[i][0]+'">'+p.opts[i][1]+'</option>';
    
		if($('#'+box).html()) { $('#'+box).dialog('moveToTop'); return; }
    
		$('body').append('<div id="'+box+'"></div>');

		$('#'+box).html(
			'<div id="upload-mess" class="server-back-info ui-widget ui-corner-all ui-widget-content ui-state-error"></div> \
			<div class="jqg-form-label-up" style="margin-top:16px;">Выберите вид документа</div> \
			<select id="upload-scan-type" style="width:280px;"><option value="none">Документ не выбран</option>'+sop+'</select> \
			<div id="upload-oper-block" style="display:none"><div style="height:24px;margin:16px 0;width:280px;"> \
			<button id="end-upload-bt" style="float:right;margin-left:8px;">Закрыть</button> \
			<button id="del-upload-bt" style="float:right;margin-left:8px;">Удалить</button> \
			<div style="float:right;" class="input-file-emu"> \
				<span id="sel-upload-bt" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icons"> \
				<span class="ui-button-icon-primary ui-icon ui-icon-folder-open"></span> \
				<span class="ui-button-text">Загрузить</span></span> \
				<input id="fileupload" class="fileupload-button" type="file" name="files[]" accept="application/pdf"> \
			</div></div> \
			<div id="progressbar" style="width:280px;"></div></div> \
			<div class="ui-widget-content ui-state-disabled ui-corner-all" \
					style="width:280px; height:48px; margin-bottom:8px; margin-top:16px; overflow-y:auto;"> \
				<div style="margin:8px 16px;">\
					Требования к загружаемым файлам:<br> Тип файла: ".pdf". Размер файла: до 8Мб. \
				</div> \
			</div>'
		);

		var doc_select = $('select#upload-scan-type');
		doc_select.change( function() {
			var scan_type = doc_select.val();
			if( scan_type != 'none' ) {
				scan_doc = bname.toLowerCase().replace(/[^а-яіїa-z0-9]/g,'')+'_'+scan_type;
				$('#upload-oper-block').show();
			}
			else {
				scan_doc = '';
				$('#upload-oper-block').hide();
			}
		});
		
		$('#fileupload').hover(
			function() { $('#sel-upload-bt').addClass('ui-state-hover'); },
			function() { $('#sel-upload-bt').removeClass('ui-state-hover'); }
		);
		$('#fileupload').mousedown(function() { $('#sel-upload-bt').addClass('ui-state-active'); } );
		$('#fileupload').mouseup(function() { $('#sel-upload-bt').removeClass('ui-state-active'); } );
	
		$( "#progressbar" ).progressbar({ value: 100 }).progressbar('disable');
	
		$('#fileupload').fileupload({
			dataType: 'json',
			url: 'index.php',
			singleFileUploads: true,
			progressInterval: 50,
			bitrateInterval: 100,
			start: function() { $( "#progressbar" ).progressbar('enable').progressbar({ value: 0 }); },
			add: function(e, data ) {
				data.submit();
			},
			progress: function (e, data) {
				var progress = parseInt(data.loaded / data.total * 100, 10);
				$( "#progressbar" ).progressbar( 'value', progress );
			},
			done: function (e, data) {
				var rsp = data.result;
				$( "#progressbar" ).progressbar( 'value', 100 ).progressbar('disable');
				if( rsp.errcode != 0 ) {
					if (rsp.errcode == '999') { 
						alert(rsp.errmess);
					}
					else {
						$('#upload-mess').html(rsp.errmess)
							.fadeIn('slow', function() {
								setTimeout( function() { $('#upload-mess').fadeOut('normal')}, 5000 );
							});
					}
					return;
				}
				if( onSuccess ) onSuccess();
			}
		});

		$('#fileupload').bind('fileuploadsubmit', function (e, data) {
			if (scan_doc == '') {
				doc_select.focus();
				return false;
			}
			data.formData = {
				q:  'parcel/doc_upl',
				par_id: curr_id,
				img: scan_doc
			};
		});
		
		$('#end-upload-bt').button({icons:{primary: "ui-icon-close"}});
		$('#end-upload-bt').click(function() { $('#'+box).dialog('close');	});
		
		$('#del-upload-bt').button({icons:{primary: "ui-icon-trash"}});
		$('#del-upload-bt').click(function() {
			if( scan_doc == '' ) return;
			var data = { q: 'parcel/doc_del', par_id: curr_id, img: scan_doc };
			$.post('index.php', data, function( rsp, textStatus) {
				if( rsp.errcode ) {
					if (rsp.errcode == '999') { 
						alert(rsp.errmess);
					}
					else {
						$('#upload-mess').html(rsp.errmess).fadeIn('slow', function() {
							setTimeout( function() { $('#upload-mess').fadeOut('normal')}, 5000 );
						});
					}
					return;
				}
				if( onSuccess ) onSuccess();
			}, 'json');		
		});
	
		$('#'+box).dialog({
			title: 'Управление документами для '+bname,
			modal: true,
			autoOpen: false,
			resizable: false,
			height: 'auto',
			width: 304,
			stack: true,
			open: function () { $('div[aria-describedby="'+box+'"]').shadow(); },
			close: function() {
				$('#'+box).dialog("destroy");
                $('#'+box).remove();
            }
		});
    
		$('#'+box).dialog('open');
	}


// Дневник
	function notePad( bname, bid ) {
		var box = 'parcel_notepad_area';
	
		if( typeof bname == 'undefined' || typeof bid == 'undefined' ) return; 
    
		if($('#'+box).html()) { $('#'+box).dialog('moveToTop'); return; }
    
		$('body').append('<div id="'+box+'"></div>');
		$('#'+box).html(
			'<div><div id="parcel_notepad_mess" class="server-back-info ui-widget ui-corner-all ui-widget-content ui-state-error"></div> \
			<textarea id="parcel_notepad_data" readonly style="resize:none; width:100%;height:200px;margin-left:-3px;"></textarea> \
			<textarea id="parcel_notepad_post" style="resize:none; width:100%;height:50px;margin-top:4px;margin-left:-3px;"></textarea></div>'
		);
		
		var npd = $('#parcel_notepad_data');
		var npp = $('#parcel_notepad_post');
		
// position:absolute; top:16px;right:16px;bottom:16px;left:16px; width:300px;height:200px; 	
		$('#'+box).dialog({
			title: 'Дневник проведения работ по объекту '+bname,
			modal: false,
//			autoOpen: false,
			resizable: false,
			closeOnEscape: false,
			height: 'auto',
			width: 500,
			stack: true,
			buttons: [ 
				{ text: "Сохранить", icons:{primary: "ui-icon-disk"}, click: saveContent },
				{ text: "Закончить", icons:{primary: "ui-icon-close"}, click: function() { $( this ).dialog( "close" ); } }
			],
			open: function () { 
				$('div[aria-describedby="'+box+'"]').shadow();
				loadContent();
			},
			close: function() {
				$('#'+box).dialog("destroy");
                $('#'+box).remove();
            }
		});
    
        $('#'+box).parent().resizable( {'aspectRatio':false, 'alsoResize':npd, minHeight:300, minWidth:400 } );
		npp.focus();
		
		function loadContent() {
			var data = { q: 'parcel/loadnotes', build_id: bid };
			$.post('index.php', data, function( rsp, textStatus) {
				if( rsp.errcode ) {
					if (rsp.errcode == '999') { 
						alert(rsp.errmess);
					}
					else {
						$('#parcel_notepad_mess').html(rsp.errmess).fadeIn('slow', function() {
							setTimeout( function() { $('#parcel_notepad_mess').fadeOut('normal')}, 5000 );
						});
					}
					return;
				}
				npd.val(rsp.data);
				npd.scrollTop( npd[0].scrollHeight - npd.height() );			
			}, 'json');					
		}
		
		function saveContent() {
			var result = false;
			var data = { q: 'parcel/savenotes', build_id: bid, notes: npp.val() };
			
			$.post('index.php', data, function( rsp, textStatus) {
				if( rsp.errcode ) {
					if (rsp.errcode == '999') { 
						alert(rsp.errmess);
					}
					else {
						$('#parcel_notepad_mess').html(rsp.errmess).fadeIn('slow', function() {
							setTimeout( function() { $('#parcel_notepad_mess').fadeOut('normal')}, 5000 );
						});
					}
				}
				else {
						npd.val(rsp.data);
						npd.scrollTop( npd[0].scrollHeight - npd.height() );			
						npp.val('');
/*						
						$('#parcel_notepad_mess')
							.removeClass('ui-state-error')
							.addClass('ui-state-highlight')
							.html("<b>Данные успешно записаны.</b>")
							.fadeIn('fast', function() {
									setTimeout( function() { 
										$('#parcel_notepad_mess')
											.hide()
											.removeClass('ui-state-highlight')
											.addClass('ui-state-error');
									}, 2000 );
							});
*/
				}
			}, 'json');
		}
		
	}
	
// ---------------------------------------------------------------------------
})(jQuery);
